﻿/********************************************************************************
** @ Date:2024/11/04
** @ Author: Gaojia
** @ Description:
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef CWorkMngAutoHy_H
#define CWorkMngAutoHy_H

#include "CWorkMngrBase.h"
#include "CRBaseData.h"
#include <QObject>
#include "CPdfRptInterface.h"
class CWorkMngAutoHy :
	public CWorkMngrBase
{
	Q_OBJECT
public:
	CWorkMngAutoHy();
	~CWorkMngAutoHy();
	void startWork();
	void endWork();
	void execEvent(int nType);
	void init(QString sSceneGuid, CDevBase *pIFDev, CRBaseData *pRBasicData);
private:
	void taskSuspend();             //暂停任务
	void taskStop();                //终止任务
	void taskReset();               //恢复任务
	void taskScan();                //扫描任务 
	void taskInit();                //初始化任务 
	void taskJudge();               //任务判断
	void taskExceptoin();           //任务异常判断
	void taskProcess();             //任务执行 巡检项执行
	void taskSleep(int nSleep);     //任务休眠等待
	void _workRun();
	bool execItem();                //执行巡检项
	void startTalkBack();           //打开对讲
	void stopTalkBack();            //停止对讲
private:
	void refreshTaskInfo();         //刷新数据库的taskinfo表
	bool execAlgorithm();           //调用算法处理
	bool selectCycTask();			//获取当前时间前后1小时内可执行的周期任务
	bool insertCotDetRet();			//插入连续检测结果	//输出综合报表
protected:
	void timerEvent(QTimerEvent * event);
private:
	QVector<CTaskInfo>m_vecTaskInfo;             //数据库任务列表
	CTaskInfo m_cTaskInfo;			             //当前可以执行的任务
	CRBaseData *m_pRBasicDataNd;              //巡检机器人基础数据对象
	int m_nRefushTaskTimer;     //刷新任务的定时器
	int m_nDisConnectPlcCount;	//线程循环PLC检测断连次数
	CPdfRptInterface *m_pRptInterface ;//报表接口
	QString m_sDevName;
};

#endif